package top.air.backend.task.model.req;

import java.io.Serial;
import java.time.*;

import jakarta.validation.constraints.*;

import lombok.Data;

import io.swagger.v3.oas.annotations.media.Schema;

import org.hibernate.validator.constraints.Length;

import top.continew.starter.extension.crud.model.req.BaseReq;

/**
 * 创建或修改试验工作量参数
 *
 * @author 文艺倾年
 * @since 2025/03/25 17:33
 */
@Data
@Schema(description = "创建或修改试验工作量参数")
public class TestLogReq extends BaseReq {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 实验人员ID JSON
     */
    @Schema(description = "实验人员ID JSON")
    @NotBlank(message = "实验人员ID JSON不能为空")
    @Length(max = 1073741824, message = "实验人员ID JSON长度不能超过 {max} 个字符")
    private String testUser;

    /**
     * 开始时间
     */
    @Schema(description = "开始时间")
    @NotNull(message = "开始时间不能为空")
    private LocalDateTime startTime;

    /**
     * 结束时间
     */
    @Schema(description = "结束时间")
    @NotNull(message = "结束时间不能为空")
    private LocalDateTime endTime;

    /**
     * 试验时数
     */
    @Schema(description = "试验时数")
    @NotNull(message = "试验时数不能为空")
    private Float testHour;

    /**
     * 加班时数
     */
    @Schema(description = "加班时数")
    @NotNull(message = "加班时数不能为空")
    private Float overtimeHour;

    /**
     * 登记项目
     */
    @Schema(description = "登记项目")
    @NotNull(message = "登记项目不能为空")
    private Integer registerStatus;

    /**
     * 试验情况简述
     */
    @Schema(description = "试验情况简述")
    @Length(max = 65535, message = "试验情况简述长度不能超过 {max} 个字符")
    private String testDescription;

    /**
     * 发动机是否故障
     */
    @Schema(description = "发动机是否故障")
    @NotNull(message = "发动机是否故障不能为空")
    private Integer isFault;

    /**
     * 故障描述
     */
    @Schema(description = "故障描述")
    @Length(max = 65535, message = "故障描述长度不能超过 {max} 个字符")
    private String faultDescription;

    /**
     * 试验名称
     */
    @Schema(description = "试验名称")
    @NotBlank(message = "试验名称不能为空")
    @Length(max = 50, message = "试验名称长度不能超过 {max} 个字符")
    private String name;

    /**
     * 试验任务ID
     */
    @Schema(description = "试验任务ID")
    @NotNull(message = "试验任务ID不能为空")
    private Long taskId;
}
